package com.ztools.common.util.common.templates;

import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.ztools.common.model.pc.store.OnlineStock;
import com.ztools.common.model.wx.payment.Cart;
import com.ztools.common.model.wx.payment.CartItem;
import com.ztools.common.util.common.enumUnit.PaymentTypeEnum;
import org.springframework.stereotype.Component;

import java.util.Objects;

/**
 * @Author: seeTools
 * @Date: 2023/6/13  17:32
 * @Version 1.0
 * 销售客服消息模板
 */
@Component
public class SaleTemplate implements BaseTemplate {

    /**
     * 线上商城购买成功客服消息
     *
     * @param cart 购物车对象
     * @return String
     */
    @Override
    public String storeSaleTemplate(Cart cart) {
        String ln = "\n";
        // 客服消息长度为20
        String divider = "======{}";
        StringBuilder msg = new StringBuilder("尊敬的VIP会员您好").append(ln);
        msg.append("您在线上商城消费了").append(cart.getPayAmount()).append("元").append(ln);
        msg.append("会员ID：").append(cart.getMemberId()).append(ln);
        msg.append("支付类型：").append(Objects.requireNonNull(PaymentTypeEnum.getEnum(cart.getPaymentType())).getName()).append(ln);
        msg.append("订单号：").append(cart.getPaymentNo()).append(ln);
        msg.append("应收金额：").append(cart.getAmount()).append("元").append(ln);
        msg.append("实付金额：").append(cart.getPayAmount()).append("元").append(ln);
        msg.append("优惠券金额：").append(cart.getCouponDiscount()).append("元").append(ln);
        msg.append("支付时间：").append(DateUtil.formatDateTime(cart.getOperateTime())).append(ln);
        // 积分兑换
        if (PaymentTypeEnum.POINT.getPaymentType().equals(cart.getPaymentType())) {
            msg.append("支付积分：").append(cart.getPoint()).append(ln);
        }
        msg.append(StrUtil.center(StrUtil.format(divider, "商品信息"), 22, "=")).append(ln);
        for (CartItem cartItem : cart.getCartList()) {
            OnlineStock onlineStock = JSONUtil.toBean(JSONUtil.toJsonStr(cartItem.getData()), OnlineStock.class);
            msg.append("商品类型：").append(onlineStock.getTypeName()).append(ln);
            msg.append("商\t\t品：").append(cartItem.getName()).append("\t").append("*\t").append(cartItem.getNums()).append(ln);
            msg.append("商品单价：").append(cartItem.getPrice()).append("元").append(ln);
            msg.append("总金额：").append(cartItem.getAmount()).append("元").append(ln);
            msg.append(StrUtil.center(StrUtil.format(divider, "="), 25, "=")).append(ln);
        }
        return msg.toString();
    }

}
